1 /* 2 * Copyright (c) 2013 - Mauro Carvalho Chehab <m.chehab@samsung.com> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License as published by 6 * the Free Software Foundation version 2.1 of the License. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Lesser General Public License for more details. 12 * 13 * You should have received a copy of the GNU Lesser General Public License 14 * along with this program; if not, write to the Free Software 15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 16 * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 17 * 18 * Described on IEC/CENELEC DS/EN 62216-1:2011 19 * 20 * I couldn't find the original version, so I used what's there at: 21 * http://tdt.telecom.pt/recursos/apresentacoes/Signalling Specifications for DTT deployment in Portugal.pdf 22 */ 23 24 /** 25 * @file desc_partial_reception.h 26 * @ingroup descriptors 27 * @brief Provides the descriptors for the ISDB partial reception descriptor 28 * @copyright GNU Lesser General Public License version 2.1 (LGPLv2.1) 29 * @author Mauro Carvalho Chehab 30 * @author Andre Roth 31 * 32 * @par Relevant specs 33 * The descriptor described herein is defined at: 34 * - IEC/CENELEC DS/EN 62216-1:2011 35 * 36 * @see http://tdt.telecom.pt/recursos/apresentacoes/Signalling Specifications for DTT deployment in Portugal.pdf 37 * 38 * @par Bug Report 39 * Please submit bug reports and patches to linux-media@vger.kernel.org 40 */ 41 42 module libdvbv5_d.desc_partial_reception; 43 44 import libdvbv5_d.descriptors: dvb_desc; 45 import libdvbv5_d.dvb_fe: dvb_v5_fe_parms; 46 47 extern (C): 48 49 /** 50 * @struct isdb_partial_reception_service_id 51 * @ingroup descriptors 52 * @brief Service ID that uses partial reception 53 * 54 * @param service_id service id 55 */ 56 struct isdb_partial_reception_service_id 57 { 58 align (1): 59 60 ushort service_id; 61 } 62 63 /** 64 * @struct isdb_desc_partial_reception 65 * @ingroup descriptors 66 * @brief Structure containing the partial reception descriptor 67 * 68 * @param type descriptor tag 69 * @param length descriptor length 70 * @param next pointer to struct dvb_desc 71 * @param partial_reception vector of struct isdb_partial_reception_service_id. 72 * The length of the vector is given by: 73 * length / sizeof(struct isdb_partial_reception_service_id). 74 */ 75 struct isdb_desc_partial_reception 76 { 77 align (1): 78 79 ubyte type; 80 ubyte length; 81 dvb_desc* next; 82 83 isdb_partial_reception_service_id* partial_reception; 84 } 85 86 // struct dvb_v5_fe_parms; 87 88 /** 89 * @brief Initializes and parses the ISDB-T partial reception descriptor 90 * @ingroup descriptors 91 * 92 * @param parms struct dvb_v5_fe_parms pointer to the opened device 93 * @param buf buffer containing the descriptor's raw data 94 * @param desc pointer to struct dvb_desc to be allocated and filled 95 * 96 * This function allocates a the descriptor and fills the fields inside 97 * the struct. It also makes sure that all fields will follow the CPU 98 * endianness. Due to that, the content of the buffer may change. 99 * 100 * @return On success, it returns the size of the allocated struct. 101 * A negative value indicates an error. 102 */ 103 int isdb_desc_partial_reception_init ( 104 dvb_v5_fe_parms* parms, 105 const(ubyte)* buf, 106 dvb_desc* desc); 107 108 /** 109 * @brief Prints the content of the ISDB-T partial reception descriptor 110 * @ingroup descriptors 111 * 112 * @param parms struct dvb_v5_fe_parms pointer to the opened device 113 * @param desc pointer to struct dvb_desc 114 */ 115 void isdb_desc_partial_reception_print ( 116 dvb_v5_fe_parms* parms, 117 const(dvb_desc)* desc); 118 119 /** 120 * @brief Frees all data allocated by the ISDB-T partial reception descriptor 121 * @ingroup descriptors 122 * 123 * @param desc pointer to struct dvb_desc to be freed 124 */ 125 void isdb_desc_partial_reception_free (dvb_desc* desc);